字串有許多實用的方法,例如大小寫轉換:
>>> s = "Hello Kitty"
>>> print(f"全小寫 {s.lower()}")
>>> print(f"全大寫 {s.upper()}")
>>> print(f"大小寫反轉 {s.swapcase()}")
全小寫 hello kitty
全大寫 HELLO KITTY
大小寫反轉 hELLO kITTY
還有可以轉換成首字大寫的方法:
>>> s = "nOt tItlE"
>>> print(f"標題 {s.title()}")
標題 Not Title
字串也有一些幫忙判斷的方法,假設我們有一個字串列表如下:
arr = [
    "[閒聊] 哥布林生存法則的梗是源自於哪裡啊?",
    "[討論] 鳴人小時候說要當火影的時候三代在想什麼?",
    "[閒聊] 笑戀是不是不會追求自己的感情",
    "[新聞] 台灣票房揭曉!《小丑:雙重瘋狂》奪冠",
    "[閒聊] 比洋德·尼特羅的強度大概多強?",
]
如果要判斷哪些標題屬於「閒聊」,可以使用 .startswith() 方法:
>>> for a in arr:
>>>     if a.startswith("[閒聊]"):
>>>         print(a)
[閒聊] 哥布林生存法則的梗是源自於哪裡啊?
[閒聊] 笑戀是不是不會追求自己的感情
[閒聊] 比洋德·尼特羅的強度大概多強?
.startswith 是用來判斷該字串的開頭是否為指定字串,以此例而言,只要判斷標題是不是 [閒聊] 開頭即可。如果想要知道字串是否以問號結尾,可以使用 .endswith() 方法:
>>> for a in arr:
>>>     if a.endswith("?"):
>>>         print(a)
[閒聊] 哥布林生存法則的梗是源自於哪裡啊?
[討論] 鳴人小時候說要當火影的時候三代在想什麼?
[閒聊] 比洋德·尼特羅的強度大概多強?
使用 .replace() 方法,可以將字串中的某些子字串替換掉:
>>> s = "今天適合出去玩嗎?那得看今天天氣好不好。"
>>> print(s.replace("今天", "明日"))
明日適合出去玩嗎?那得看明日天氣好不好。
.replace("今天", "明日") 會把所有的「今天」都換成「明日」,如果不想要全部換掉,可以再加上一個次數的參數:
>>> s = "今天適合出去玩嗎?那得看今天天氣好不好。"
>>> print(s.replace("今天", "明日", 1))
明日適合出去玩嗎?那得看今天天氣好不好。
改成 .replace("今天", "明日", 1) 就只會把第一個「今天」給換掉。
有些時候,我們並不希望字串有多餘的空格,這時可以用 .strip() 類的方法來移除多餘的空白:
>>> s = "  apple   "
>>> print(f"[{s}]")
>>> print(f"[{s.strip()}]")  # 左右空白都移除
>>> print(f"[{s.lstrip()}]")  # 只移除左邊的空白
>>> print(f"[{s.rstrip()}]")  # 只移除右邊的空白
[  apple   ]
[apple]
[apple   ]
[  apple]
但是 .strip() 並不能移除中間的空白:
>>> s = "apple   banana"
>>> print(s.strip())
apple   banana
透過 in 關鍵字可以判斷字串是否包含某個子字串,結合 while 與 .replace() 可以移除中間的空格:
>>> while "  " in s:
>>>     s = s.replace("  ", " ")
>>> print(s)
apple banana
透過 .split() 方法可以把字串切割成列表:
>>> s = "Today is a good day!"
>>> print(s.split())
['Today', 'is', 'a', 'good', 'day!']
變成列表後,每個元素都還是字串,可以各自進行操作:
>>> s = "Today is a good day!"
>>> s = s.split()
>>>
>>> for i, ss in enumerate(s):
>>>     s[i] = ss.title()
>>> s[3] = s[3].upper()
>>>
>>> s
['Today', 'Is', 'A', 'GOOD', 'Day!']
最後可以用 .join() 方法,把列表重新合併成字串:
>>> s = " ".join(s)
>>> print(s)
Today Is A GOOD Day!
.join() 是個特別的方法,被合併的列表是做為參數被傳進方法裡面,而真正用來發動此方法的是空格 " ",代表用空格來串接這些元素,也可以換成其他字串:
>>> print("+".join(s))  # 用加號連接
>>> print("".join(s))  # 不使用任何字串連接
Today+Is+A+GOOD+Day!
TodayIsAGOODDay!
掌握這些字串方法,是文字處理相當重要的基本功。